#ifndef FACE_H
#define FACE_H

#include <QList>
#include "sommet.h"
#include "vecteur.h"

/*
 *  @autheur : LEMOUEL Florian
 *  @date : 30.03.2013
 *  @version 1.0 : création de la classe complète
 */


/*
 * Classe représentant une face
 * Une face a un ensemble de sommets la constituant.
 * On peut calculer son centre de gravité ainsi que sa normale.
 */
class Face
{
    //--------------------- Constructeurs et destructeur -------------------
public:
    //Constructeur par défault
    Face();

    //Constructeur prenant une liste de sommets
    Face(QList<Sommet*> listeSommets);

    //Constructeur de recopie
    Face(const Face& face);

    //Destructeur du point
    ~Face();
    //----------------------------------------------------------------------
    //--------------------- Méthodes ---------------------------------------
public:
    //On renvoie le nombre de sommets de la face
    int getNbSommets();

    //On calcule le centre de gravité de la face
    Point& getCentreGravite();

    //On renvoie la normale de la face
    Vecteur& getNormale();

    //On rajoute un nouveau sommet à la face
    void ajouterSommet(Sommet& s);

    //Fonction de dessin de la face
    void dessiner();

    //----------------------------------------------------------------------

    //--------------------- Accesseurs -------------------------------------
public:

    //On renvoie le sommet i de la face
    Sommet& getSommet(int i);

    //----------------------------------------------------------------------
    //--------------------- Surcharge des opérateurs -----------------------

    //----------------------------------------------------------------------
    //--------------------- Attributs --------------------------------------
private:

    //Liste des sommets de la face
    QList<Sommet*> _sommets;


    //----------------------------------------------------------------------
};

#endif // FACE_H
